
 1000  *---------------------------------
 1010  *      DEMONSTRATION OF READING A TEXT FILE
 1020  *---------------------------------
 1030  PROMPT.CHAR         .EQ $33
 1040  CURRENT.LINE.NO     .EQ $75,76
 1050  BUF.PNTR            .EQ $9D,9E
 1060  DOS.LANGUAGE.FLAG   .EQ $AAB6
 1070  ONERR.FLAG          .EQ $D8
 1080  DOS.ONERR.PNTR      .EQ $9D5A,9D5B
 1090  DOS.REENTRY         .EQ $3D0
 1100  MON.RDKEY           .EQ $FD0C
 1110  MON.COUT            .EQ $FDED
 1120  *---------------------------------
 1130  TEXT.READER
 1140  *---------------------------------
 1150  *      PATCH DOS SO END OF FILE WILL
 1160  *      BRANCH TO MY "END.OF.DATA"
 1170  *---------------------------------
 1180         LDA #1       TELL DOS WE ARE IN APPLESOFT
 1190         STA DOS.LANGUAGE.FLAG
 1200         STA CURRENT.LINE.NO+1  NOT IN DIRECT MODE
 1210         STA PROMPT.CHAR        NOT DIRECT MODE
 1220         LDA #$FF     TURN ON "ON ERR"
 1230         STA ONERR.FLAG
 1240         LDA #END.OF.DATA
 1250         STA DOS.ONERR.PNTR
 1260         LDA /END.OF.DATA
 1270         STA DOS.ONERR.PNTR+1
 1280  *---------------------------------
 1290  *      OPEN THE FILE
 1300  *---------------------------------
 1310         LDY #QOPEN-QTS
 1320         JSR QUOTE.PRINT
 1330         LDY #QREAD-QTS
 1340         JSR QUOTE.PRINT
 1350  *---------------------------------
 1360  *      READ THE FILE
 1370  *---------------------------------
 1380         TSX
 1390         STX OLD.STACK.PNTR
 1400         LDA #BUFFER
 1410         STA BUF.PNTR
 1420         LDA /BUFFER
 1430         STA BUF.PNTR+1
 1440  .1     JSR MON.RDKEY   READ CHARACTER
 1450         LDY #0
 1460         STA (BUF.PNTR),Y
 1470         INC BUF.PNTR
 1480         BNE .1
 1490         INC BUF.PNTR+1
 1500         BNE .1       ...ALWAYS
 1510  *---------------------------------
 1520  END.OF.DATA
 1530         LDX OLD.STACK.PNTR
 1540         TXS
 1550         LDY #QCLOSE-QTS
 1560         JSR QUOTE.PRINT
 1570         JMP DOS.REENTRY
 1580  *---------------------------------
 1590  *      PRINT A MESSAGE
 1600  *      MESSAGE STARTS AT QTS,Y
 1610  *      MESSAGE ENDS WITH 00 BYTE
 1620  *---------------------------------
 1630  QUOTE.PRINT
 1640  .1     LDA QTS,Y
 1650         BEQ .2
 1660         JSR MON.COUT
 1670         INY
 1680         BNE .1       ...ALWAYS
 1690  .2     RTS
 1700  *---------------------------------
 1710  QTS    .EQ *
 1720  QOPEN  .HS 84       CONTROL-D
 1730         .AS -/OPEN TESTFILE/
 1740         .HS 8D00
 1750  QREAD  .HS 84       CONTROL-D
 1760         .AS -/READ TESTFILE/
 1770         .HS 8D00
 1780  QCLOSE .HS 84       CONTROL-D
 1790         .AS -/CLOSE/
 1800         .HS 8D00
 1810  *---------------------------------
 1820  OLD.STACK.PNTR .BS 1
 1830  *---------------------------------
 1840  BUFFER     .EQ $4000
 1850  *---------------------------------

